﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson4 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 向量
        //三维向量 - Vector3
        //Vetor3有两种几何意义
        //1.位置 - 代表一个点
        Debug.LogFormat("postion:{0}", this.transform.position);

        //2.方向 - 代表一个方向
        Debug.LogFormat("forward:{0}", this.transform.forward);
        Debug.LogFormat("up:{0}", this.transform.up);

        Vector3 v = new Vector3(1,2,3);
        Vector2 v2 = new Vector2(1,2);
        #endregion

        #region 知识点二 两点决定-向量
        //A和B此时 几何意义 是两个点
        Vector3 A = new Vector3(1 ,2, 3);
        Vector3 B = new Vector3(5, 1, 5);
        //求向量
        //此时 AB 和 BA 他们的几何意义 是两个向量
        Vector3 AB = B - A;
        Vector3 BA = A - B;
        #endregion

        #region 知识点三 零向量和负向量
        //零向量
        print(Vector3.zero);
        print(new Vector3(0,0,0));

        //负向量
        print(Vector3.forward);
        print(-Vector3.forward);
        #endregion

        #region 知识点四 向量的模长
        Debug.LogFormat("AB向量模长:{0}", AB.magnitude);
        Vector3 C = new Vector3(5,6,7);
        //C点相对于原点的模长
        Debug.LogFormat("C向量模长:{0}", C.magnitude);

        //得到2个点的距离(与AB.magnitude值一样)
        Debug.LogFormat("AB之间的距离:{0}", Vector3.Distance(A, B));
        #endregion

        #region 知识点五 单位向量 
        //Vector3中提供了获取单位向量的成员属性
        //normalized
        Debug.LogFormat("AB的单位向量:{0}", AB.normalized);
        Debug.LogFormat("AB的单位向量:{0}", AB / AB.magnitude);
        #endregion
    }

    #region 总结
    //1.Vector3 可以表示一个点，也可以表示一个向量 具体表示什么，根据我们具体的需求和逻辑决定
    //2.如何在Unity里面得到向量，终点减起点，就可以得到向量，点C也可以代表向量，代表的是OC向量，O是坐标原点
    //3.得到了向量，就可以利用 Vector3中提供的 成员属性 得到模长和单位向量
    //4.模长相当于可以得到两点之间的距离 单位向量 主要是用来进行移动计算的，它不会影响我们想要的移动效果
    #endregion

    // Update is called once per frame
    void Update()
    {
        
    }
}
